

import Socket.*;
import Servidor.*;

/**
* Clase para manejar cada una de las conexiones de los clientes 
*/
public class hilo extends Thread {

  private SocketBytes SocketDatos; // Socket de comunicacion
  private JuegoServidor sd1;
  private int id; // identificador de cliente conectado
  private int numpreg;
  private String preg1;
  private int resp1;
  private String preg2;
  private int resp2;  
  /*
  * Constructor que recibe Socket de comunicacion y objeto servidor para actualizar numero de conexiones
  */

  
  public hilo(SocketBytes socketDatos2, JuegoServidor copyOfServidor) {
	   try {
		      // miembros para comunicacion por sockets
		      SocketDatos = socketDatos2;
		      sd1 =copyOfServidor;
		      numpreg=0;
		      
		      preg1 ="Pregunta\n" +
					"1) Tonio\n" +
					"2) Migue\n" +
					"3) Alberto\n";
		      
		      resp1=3;
		      
		      preg2 ="Pregunta 2\n" +
					"1) Tonio\n" +
					"2) Migue\n" +
					"3) Alberto\n";
		      
		      resp2=2;
		      

		      // SocketDatos.setSOTimeout(3000); // Colocar un tope a la espera en una operaci�n de lectura de un socket
		      
		      //Al crear un hilo se le envia un mensaje al cliente.
		      id = ((Integer) SocketDatos.recibeMensaje()).intValue();
		      sd1.escribirMensaje("El jugador "+id+" se ha unido a la partida.\n");
		      
	          //SocketDatos.enviaMensaje("Esperate un ratito a que llegen los demas.\n");
		    } catch (Exception e) // Imprimir cualquier excepci�n
		    { System.err.println(e); }
}

public void run() {
    boolean acabar = false;
    int dato;

    try {
      while (acabar == false) {
	  
 
        if(numpreg == 0){
            try {  
            	if (id == 1)
            		sd1.escribirMensaje(preg1);
            	
            	SocketDatos.enviaMensaje(preg1);
          
            	dato = ((Integer) SocketDatos.recibeMensaje()).intValue(); 
   
            } catch (Exception e) { 
            	System.err.println(e);
            	break;
            }

            if (dato == 0)
            	acabar = true;
            else{
            	numpreg++;
            	if (dato == resp1){
            		sd1.escribirMensaje("Jugador " + id +  " ha acertado\n");
            		sd1.escribirMensaje("La respuesta correcta era: 3\n");            		
            	}
            }
        
        }
               
        
        
        if(numpreg == 1){
            try {  
            	
            	if (id == 1)
            		sd1.escribirMensaje(preg2);
            	
            	SocketDatos.enviaMensaje(preg2);
          
            	dato = ((Integer) SocketDatos.recibeMensaje()).intValue(); 
   
            } catch (Exception e) { 
            	System.err.println(e);
            	break;
            }

            if (dato == 0)
            	acabar = true;
            else{
            	numpreg++;
            	if (dato == resp2){
            		sd1.escribirMensaje("Jugador " + id +  " ha acertado\n");
            		sd1.escribirMensaje("La respuesta correcta era: 2\n");
            	}
            	
            }
        
        }
        
        if(numpreg == 2){
        	SocketDatos.enviaMensaje("Gracias por participar");
        	acabar= true;
        	numpreg++;
        	
        }
          //System.out.println("Jugador " + id +  " ha contestado " +  dato);
      } // while ...

      SocketDatos.close();
      //sd1.subnumcon();
      if (id ==1)
    	  sd1.escribirMensaje("Fin de la partida.\n");
      
      
      synchronized (sd1) {
        sd1.notify();
      }
    } catch (Exception e) // Imprimir cualquier excepci�n
    { System.err.println(e); }
  } // run
} // hilo
